setInfos(3, "Damian", "Cyber Master : cumpermission", "Indica, Doti", "started", 0xFFFFFF, "en", ["anal", "long", "exhibition", "femaledom", "formale", "humiliation", "urine", "transgender", "options", "spanking", "shopping", "toys", "sperm"]);

// CyberMistress - cumpermission
//
def endReached = false
def block = "begin"
if(loadString("cybermistress.wanted_start_block")!=null) {
	block = loadString("cybermistress.wanted_start_block")
	save("cybermistress.wanted_start_block",null)
}
def newBlock = block
while(!endReached && newBlock!=null) {
block = null
switch(newBlock) {
case "begin":
	setImage("jewell/tease.jpg")
	def messages0 = ["It's your lucky day slut, I've granted you permission to cum.","You've been waiting for this haven't you my filthy whore?","Is your little dicklet all you think about? Alright my degenerate stroker, follow my instructions.","Very well my little stroker I'll allow you to cum.","Very well slut, just this once..."]
	show(messages0[getRandom(5)])
	wait(10)
	save("cumpermission.buttplug_On", null)
	save("cumpermission.panties_On", null)
	save("cumpermission.gag_On", null)
	save("cumpermission.clothespegs_On", null)
	block = "toyspick"
	break

case "toyspick":
	show("Hmmmm...")
	wait(1)
	switch(getRandom(7)) {
	case 0: block = "buttplug"; break
	case 1: block = "panties"; break
	case 2: block = "reggag"; break
	case 3: block = "ballgag"; break
	case 4: block = "clothespegs"; break
	case 5: block = "ringgag"; break
	case 6: block = "toysdone"; break
	}
	break

case "buttplug":
	if(true==loadBoolean("cumpermission.buttplug_On")) {
		block="toyspick"
		break
	}
	if(loadBoolean("toys.buttplug")!=true) {
		block="toyspick"
		break
	}
	def messages2 = ["Your butt seems lonely slut. Go find it a friend and shove it in there.","Plug that ass for me slut. Sluts should always be filled.","Shove your buttplug up your ass, slave. I want you plugged for this.","Lube up that buttplug extra slippery and slide it inside your ass, my hungry buttslave.","Okay sissy, plug that ass for me. You know you love it."]
	show(messages2[getRandom(5)])
	showButton("Finished tmistress")
	save("cumpermission.buttplug_On", true)
	block = "toyspick"
	break

case "panties":
	if(true==loadBoolean("cumpermission.panties_On")) {
		block="toyspick"
		break
	}
	if(loadBoolean("clothes.panties")!=true) {
		block="toyspick"
		break
	}
	def messages3 = ["Go put on your dirtiest pair of panties, my little pantyslut.","Put a pair of panties on immediately. NOW sissy!","Go get your best panties and put them on for me, slut.","Okay my feminized slut, put on some panties."]
	show(messages3[getRandom(4)])
	showButton("Finished Master")
	save("cumpermission.panties_On", true)
	block = "toyspick"
	break

case "reggag":
	if(loadBoolean("cumpermission.gag_On")) {
		block="toyspick"
		break
	}
	def messages4 = ["Gag your mouth with a sock for me.","Shove a dirty sock in your mouth, slut.","I've heard enough from you slave, put a strip of duct tape across your mouth.","Put two strips of duct tape across your mouth in a criss-cross pattern. I don't need you talking and ruining this for me.","Put at least two strips of duct tape across your mouth. I don't want you making any noises, slave."]
	show(messages4[getRandom(5)])
	showButton("mmMMMph!")
	save("cumpermission.gag_On", true)
	block = "toyspick"
	break

case "ballgag":
	if(loadBoolean("cumpermission.gag_On")) {
		block="toyspick"
		break
	}
	if(loadBoolean("toys.ballgag")!=true) {
		block="toyspick"
		break
	}
	def messages5 = ["I've heard enough out of you, pop in a ball-gag slave.","Open your mouth slut. Now shove a ball-gag in.","I want you silent. Gag yourself with a ball-gag.","Gag yourself slut, I want a ball-gag in your mouth NOW!"]
	show(messages5[getRandom(4)])
	showButton("mmMMMph")
	save("cumpermission.gag_On", true)
	block = "toyspick"
	break

case "ringgag":
	if(true==loadBoolean("cumpermission.gag_On")) {
		block="toyspick"
		break
	}
	if(loadBoolean("toys.ringgag")!=true) {
		block="toyspick"
		break
	}
	def messages6 = ["Well my drooling slut, time to gag yourself with a ring-gag.","Alright my subhuman slut, I want a ring-gag in your mouth.","Gag yourself with a ring-gag. I want to see you drooling, slave."]
	show(messages6[getRandom(3)])
	showButton("mmMMMph")
	save("cumpermission.gag_On", true)
	block = "toyspick"
	break

case "clothespegs":
	if(true==loadBoolean("cumpermission.clothespegs_On")) {
		block="toyspick"
		break
	}
	if(loadBoolean("toys.clothespins")!=true) {
		block="toyspick"
		break
	}
	def messages7 = ["Put a clothpeg on each nipple.","Put one clothespeg on your ballsack.","Put two clothespegs on your ballsack.","Put four clothespegs on your ballsack.","Put two clothespegs on each nipple."]
	show(messages7[getRandom(5)])
	showButton("Finished Master")
	save("cumpermission.clothespegs_On", true)
	block = "toyspick"
	break

case "toysdone":
	def messages8 = ["On second thought, that's fine for now.","Alright I'm bored of dressing you up slut.","That'll have to do."]
	show(messages8[getRandom(3)])
	wait(8)
	block = "startshow"
	break

case "startshow":
	setImage("jewell/tease2.jpg")
	def messages9 = ["Rub yourself hard using only your pinkies, slut.","I want you to get hard just thinking about what I'm going to do to you. No touching!","Rub yourself hard by humping some piece of furnature, my horny slut.","Slap your little dicklet against your stomach until it gets hard.","Rub just the head of your dicklet until it's hard.","Slap your dick until it gets hard. Not little sissy playful slaps, full slaps!","Rub yourself hard with just two fingers."]
	show(messages9[getRandom(7)])
	showButton("I'm hard Master")
	block = "onwiththeshow"
	break

case "onwiththeshow":
	setImage("jewell/tease.jpg")
	def messages10 = ["Hmmmm...","What shall I have you do, slut?","I love seeing you like this, slut.","I bet you'd love to cum right now wouldn't you slave?","What's next for you my little stroker?"]
	show(messages10[getRandom(5)])
	wait(2)
	switch(getRandom(6)) {
	case 0: block = "stroke"; break
	case 1: block = "edge"; break
	case 2: block = "tease"; break
	case 3: block = "toyspecial"; break
	case 4: block = "punish"; break
	case 5: block = "okayslut"; break
	}
	break

case "stroke":
	def messages11 = ["Stroke slowly slut, no more than once up and down every two seconds. Worship me with your cock.","Stroke quickly for me slut, at least three times up and down per second. Don't you cum now...","Stroke however you want, slave. I love watching you squirm.","Stroke at an average pace, one up and down per second. Keep all that filthy cum in your balls.","I want you to stroke as slowly as you can. One up and down every five seconds or so. Hold tight and move your hand at a snails crawl.","Stroke fast slut, four times up and down per second. Hold back that cum. Don't you dare let it out.","Just stroke normally for me. Once up and down per second. Hold steady, slut.","Speed it up slave, stroke at least three times per second. Careful not to spill...","Worship me slave. Hold that cock hard and stroke with painful slowness.","Stroke freely, slut.","Stroke at a normal rate, once up and down per second. Can you feel all that cum in your balls, sissy? I bet it's just begging to get out."]
	show(messages11[getRandom(11)])
	def time = 30+getRandom(70)
	block = "onwiththeshow"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "tease":
	def messages12 = ["Stroke yourself with just one finger slave.","Rub the tip of your dicklet with your palm. Slowly slut.","Make circles on the tip of your dicklet with your index finger.","Stroke yourself with only your thumb and forefinger. Lightly now.","Stroke only the shaft, don't even touch the head. I mean it slut.","Lightly tickle yourself with your fingers. Try to keep yourself hard with the lightest touches."]
	show(messages12[getRandom(6)])
	def time = 30+getRandom(70)
	block = "onwiththeshow"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "punish":
	def messages13 = ["Slap your dicklet against your stomach until I tell you to stop.","Slap your dick until I give you permission to stop.","Smack your balls at least once every two seconds until I tell you to stop.","Flick the tip of your dicklet with one finger over and over until I give you permission to stop."]
	show(messages13[getRandom(4)])
	def time = 25+getRandom(60)
	block = "punish2"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "punish2":
	def messages14 = ["Okay slut, you can stop.","You can stop now sissy.","Stop, bitch."]
	show(messages14[getRandom(3)])
	wait(5)
	block = "onwiththeshow"
	break

case "edge":
	def messages15 = ["Bring yourself to the edge slut. Tell me when you're ready to pop.","Edge for me slut. Let me know when you're about to blow.","Edge for me bitch! Bring yourself as close as you can without cumming. Tell me when you're there.","Bring yourself right to the edge, slave. Tell me when you're there."]
	show(messages15[getRandom(4)])
	showButton("Edging Master")
	block = "edge2"
	break

case "edge2":
	def messages16 = ["Hold it for me slut. Don't you dare cum.","Keep on the edge slave, don't spill now.","Don't stop edging now. And don't you even THINK of cumming.","Hold the edge for me bitch. Don't DARE spill any of that filthy cum."]
	show(messages16[getRandom(4)])
	def time = 6+getRandom(74)
	block = "edge3"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}
	break

case "edge3":
	def messages17 = ["Okay slut, hands off your dicklet.","HANDS OFF SLUT! Let go immediately!","Let go of that dicklet, slave. No touching.","HANDS OFF! No touching that dicklet without my permission."]
	show(messages17[getRandom(4)])
	wait(20+getRandom(15))
	block = "onwiththeshow"
	break

case "toyspecial":
	switch(getRandom(5)) {
	case 0: block = "plugspec"; break
	case 1: block = "gagspec"; break
	case 2: block = "pegspec"; break
	case 3: block = "pantyspec"; break
	case 4: block = "onwiththeshow"; break
	}
	break

case "plugspec":
	if(true!=loadBoolean("cumpermission.buttplug_On")) {
		block="toyspecial"
		break
	}
	def messages19 = ["Grab your buttplug, and fuck yourself with it while you keep stroking.","Pull your buttplug all the way out, then push it back all the way in. Keep doing this while you stroke at a medium pace.","Hold the base of your buttplug, then fuck yourself with it by moving your ass up and down. Keep stroking for me bitch."]
	show(messages19[getRandom(3)])
	def time = 30+getRandom(70)
	block = "onwiththeshow"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "gagspec":
	if(true!=loadBoolean("cumpermission.gag_On")) {
		block="toyspecial"
		break
	}
	def messages20 = ["I want you to moan for me through your gag. Try to say my name, bitch! Keep stroking at a steady rate.","Moan through your gag slut. I want to hear you while you stroke for me.","Moan as loud as you can with your gag still on. Stroke quickly, at least three times up and down per second."]
	show(messages20[getRandom(3)])
	def time = 30+getRandom(70)
	block = "onwiththeshow"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "pegspec":
	if(true!=loadBoolean("cumpermission.clothespegs_On")) {
		block="toyspecial"
		break
	}
	def messages21 = ["Take off all your clothespegs and rotate them. Having fun slave?","Take all your clothespegs off, wait 5 seconds, then put them back on."]
	show(messages21[getRandom(2)])
	def time = 30+getRandom(70)
	block = "onwiththeshow"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "pantyspec":
	if(true!=loadBoolean("cumpermission.panties_On")) {
		block="toyspecial"
		break
	}
	def messages22 = ["Put your little nublet back inside your panties. I want you to rub it through the panties.","Put your little dicklet back in your panties. Rub your pathetic little dickie for me, through the panties."]
	show(messages22[getRandom(2)])
	def time = 30+getRandom(70)
	block = "onwiththeshow"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "failure":
	setImage("jewell/punishments.jpg")
	show("Unacceptable.")
	if(getBoolean("Did you cum or stop? (Y: came, N: stopped)"))
		block = "cumfailure"
	else
		block = "stopfailure"
	break

case "stopfailure":
	def messages24 = ["You need to learn better control, bitch.","You need discpline, slut."]
	show(messages24[getRandom(2)])
	wait(5)
	switch(getRandom(2)) {
	case 0: block = "stopgood"; break
	case 1: block = "stopbad"; break
	}
	break

case "stopgood":
	if(loadInteger("cybermistress.points")==null)
		save("cybermistress.points", 80)
	save("cybermistress.points", -1+loadInteger("cybermistress.points"))
	def messages25 = ["I'll forgive you this time slave, but don't test my patience.","I'm giving you another chance slut, don't make me regret it."]
	show("(You've got "+loadInteger("cybermistress.points")+" points)\n"+messages25[getRandom(2)])
	wait(5)
	block = "onwiththeshow"
	break

case "stopbad":
	if(loadInteger("cybermistress.points")==null)
		save("cybermistress.points", 80)
	save("cybermistress.points", -3+loadInteger("cybermistress.points"))
	def messages26 = ["Well if you've stopped you must be done. Put that little dicklet away slut, you're finished.","You'll have to to better next time, because you're done slut.","You'll remember to follow instructions next time, bitch."]
	show("(You've got "+loadInteger("cybermistress.points")+" points)\n"+messages26[getRandom(3)])
	wait(3)
	block = "finish"
	break

case "cumfailure":
	if(getBoolean("Of course, you ruined the orgasm right slave?"))
		block = "ruinedfailure"
	else
		block = "ultimatefailure"
	break

case "ultimatefailure":
	def messages28 = ["You will be denied orgasms for 72 hours while you think about your failure.","This is completely unacceptable you stupid slut! No cumming for 72 hours.","I am very disappointed in you, "+loadString("intro.name")+". You will be denied orgasm for 72 hours."]
	show(messages28[getRandom(3)])
	wait(6)
	save("cumpermission.deny_Orgasm", true)
	block = "finish"
	break

case "ruinedfailure":
	def messages29 = ["Bad slut. Your pathetic dicklet belongs to me, and I did not give you permission to cum. No cumming for 24 hours.","What a naughty whore. I'm giving you 24 hours of chastity to cool off.","No cumming for 24 hours. You'll have to learn better slave.","You are denied orgasm for 24 hours. Slaves need better control."]
	show(messages29[getRandom(4)])
	wait(6)
	save("cumpermission.deny_Orgasm", true)
	block = "finish"
	break

case "okayslut":
	def messages30 = ["Okay slut, it's almost time.","Okay slut, get ready you're almost ready...","Okay slut, your orgasm is right around the corner..."]
	show(messages30[getRandom(3)])
	wait(4)
	switch(getRandom(5)) {
	case 0: block = "edgegasm"; break
	case 1: block = "nogasm"; break
	case 2: block = "quickgasm"; break
	case 3: block = "buttgasm"; break
	case 4: block = "psyche"; break
	}
	break

case "edgegasm":
	def messages31 = ["Bring yourself to the edge for me slut. No cumming yet, you'll have to hold it.","Edge for me bitch. Bring yourself closer than you've been since you started.","Start edging now slut. Don't you even think about cumming.","Bring yourself right to the edge. I want you to within an inch of cumming.","Alright slut, start edging for me. I want you right on the cusp.","Edge for me bitch. I want you as close as you can get to cumming.","Bring yourself to the edge for me slut."]
	show(messages31[getRandom(7)])
	def time = 30+getRandom(70)
	block = "edgegasm2"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "edgegasm2":
	def messages32 = ["Okay slut, hold that edge. Don't you even think of cumming.","Hold the edge for me slut. I want you squirming.","Don't you dare cum slut, hold that edge. Keep that cum in your balls.","Hold that edge sissy, you are NOT allowed to cum yet."]
	show(messages32[getRandom(4)])
	def time = 15+getRandom(35)
	block = "edgegasm2"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "edgegasm3":
	switch(getRandom(5)) {
	case 0: block = "happyending"; break
	case 1: block = "sadending"; break
	case 2: block = "herewegoagain"; break
	case 3: block = "happyending"; break
	case 4: block = "sissyending"; break
	}
	break

case "happyending":
	def messages34 = ["Okay slave, you can cum now.","Alright slut, you may cum.","Okay sissy, you may squirt now.","Cum for me bitch. I want you to say my name while you squirt.","Cum for me sissy. Milk your little dicklet."]
	show(messages34[getRandom(5)])
	showButton("Finished Master")
	block = "finish"
	break

case "herewegoagain":
	def messages35 = ["Okay sissy, let go of your cock for a bit, and get ready to do another edge.","Let your cock rest for a bit slut, you'll be giving me another edge soon.","Let go sissy. No touching that dicklet without my permission."]
	show(messages35[getRandom(3)])
	wait(15+getRandom(25))
	block = "edgegasm"
	break

case "sadending":
	def messages36 = ["Okay bring yourself just over the edge then HANDS OFF! Ruin that orgasm for me.","Okay start to cum but immediately remove your hands. A ruined orgasm is more than enough for a sissy slave.","Okay slave, bring yourself over the edge then LET GO! You will ruin your orgasm for me."]
	show(messages36[getRandom(3)])
	showButton("Finished Master")
	block = "finish"
	break

case "sissyending":
	def messages37 = ["Okay sissy, you may cum. Let it all fall on your stomach and don't clean it up. Let me know when you're finished.","Alright my little sissy, you may cum now. Make sure you get it all over your stomach, and don't clean it up. Tell me when you're done.","Very well sissy, you may cum. I want it all to land on your stomach, let me know when you have a stomach covered in cum."]
	show(messages37[getRandom(3)])
	showButton("Finished Master")
	block = "sissyending2"
	break

case "sissyending2":
	def messages38 = ["I want you to rub the cum all over your body. Sissies love cum. Thank me out loud for letting you cover yourself in cum.","Smear some of your cum on your face, not forgetting the lips. Such a digusting whore you are.","Stick your hand in the mess and lick it off your fingers like the cum-guzzling whore you are.","I want you to rub it all over your body. You love cum, because you're my slave and I've just told you that you love cum."]
	show(messages38[getRandom(4)])
	wait(10)
	block = "sissyending3"
	break

case "sissyending3":
	def messages39 = ["Leave it there for 5 minutes.","Leave it there for at least a minute.","Leave it there for 10 minutes. I like you like that.","Don't clean yourself up for 5 minutes, slut. You know you love it."]
	show(messages39[getRandom(4)])
	wait(4)
	block = "finish"
	break

case "quickgasm":
	def messages40 = ["Bring yourself to the edge for me slut. No cumming yet, you'll have to hold it.","Edge for me bitch. Bring yourself closer than you've been since you started.","Start edging now slut. Don't you even think about cumming.","Bring yourself right to the edge. I want you to within an inch of cumming.","Alright slut, start edging for me. I want you right on the cusp.","Edge for me bitch. I want you as close as you can get to cumming.","Bring yourself to the edge for me slut."]
	show(messages40[getRandom(7)])
	showButton("Edging Master")
	block = "buildup"
	break

case "buildup":
	def messages41 = ["Hold it for me slut.","Hold that edge now sissy.","Don't you dare cum, slave. Hold that edge for me.","You better hold that edge slut. No cumming.","Don't you even think of cumming. Hold that edge for me."]
	show(messages41[getRandom(5)])
	def time = 30+getRandom(35)
	block = "quickgasm2"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "quickgasm2":
	def messages42 = ["Cum NOW slut! I won't wait forever.","Cum IMMEDIATELY slave. You have a limited time.","Cum NOW! If you can't do it fast you won't get to at all.","Okay cum sissy. Better do it fast though."]
	show(messages42[getRandom(4)])
	def time = 8+getRandom(20)
	block = "quickgasmhurrah"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "nosoupforyou":
	def messages43 = ["You weren't really edging were you bitch? Too bad for you, that was all the chance you get.","Well if you couldn't cum for me you obviously don't need to very badly. You're finished here.","Oh well, looks like no cumming for you this time. You'll have to learn better control.","Time's up slut. That's the only chance you were going to get to cum. I hope you enjoyed it.","Time's up bitch. If you won't cum on my command you won't cum at all."]
	show(messages43[getRandom(5)])
	wait(4)
	block = "finish"
	break

case "quickgasmhurrah":
	def messages44 = ["Good little slave.","Very good slut, you may clean yourself now.","Very well, I'm finished with you then.","I hope you enjoyed yourself, my darling whore.","Good. Control is important for a slave."]
	show(messages44[getRandom(5)])
	wait(4)
	block = "finish"
	break

case "buttgasm":
	if(true!=loadBoolean("buttplug_On")) {
		block="edgegasm"
		break
	}
	def messages45 = ["Start fucking yourself with your buttplug, slut. Bring yourself to the edge while your ass gets fucked.","Grab that plug in your ass and start fucking yourself bitch. Edge for me.","Sit on your plug and bounce while you edge for me, slut."]
	show(messages45[getRandom(3)])
	def time = 15+getRandom(35)
	block = "edgegasm2"
	if(showButton("I came or stopped!",time)<time) {
		block = "failure"
		break
	}	
	break

case "psyche":
	def messages46 = ["Come to think of it slut, I'm not done teasing you yet.","On second though, I think I'll tease you some more.","Haha, just kidding "+loadString("intro.name")+". I'm still not through teasing you."]
	show(messages46[getRandom(3)])
	wait(4)
	block = "onwiththeshow"
	break

case "nogasm":
	def messages47 = ["Alright slut, bring yourself right to the edge.","Edge for me bitch. I want you as close as you can get to cumming.","Bring yourself to the edge for me slut."]
	show(messages47[getRandom(3)])
	showButton("Edging Master")
	block = "nogasm2"
	break

case "nogasm2":
	def messages48 = ["LET GO! No orgasm for you slave, I just want to tease you.","HANDS OFF! That's all you get for now slave. I don't feel like letting you cum.","HANDS OFF SLUT! No touching that dick. Put it away, you're finished for now."]
	show(messages48[getRandom(3)])
	wait(5)
	block = "finish"
	break

case "finish":
	endReached = true
	break

default:
	show("Unfinished ? ("+block+")")
	endReached = true
} // end switch 
newBlock = block
} // end while
return "jewell"

// This script, from http://ss.deviatenow.com, is protected by this licence : 
// CC by-NC, see http://creativecommons.org/licenses/by-nc/3.0/

